Gann High Low, iki farklı basit hareketli ortalamadan oluşan hareketli ortalama tabanlı bir trend göstergesidir.
Gann Yüksek Düşük Aktivatör Göstergesi, Robert Krausz tarafından Stocks & Commodities Magazine'in 1998 sayısında açıklanmıştır.
Önceki n dönemin en yüksek veya en düşük seviyelerinin basit bir hareketli ortalama SMA'sıdır.
Gösterge, her iki eğriyi de izler (yüksek ve alçak). Çubuğun kapanması, ikisinden hangisinin çizileceğini tanımlar.
Bu sürüm, trendin değişmesi durumunda kırılması gereken kanalı gösterir ve hesaplama için 4 temel ortalama türünden seçim yapmanıza
olanak tanır (tanım gereği, Gann Yüksek Düşük Aktivatör yalnızca basit hareketli ortalama kullanır, ancak bazı diğer ortalamalar,
bazı koşullarda ticaret için muhtemelen daha kabul edilebilir sonuçlar verebilir).
Kısa vadeli işlemler için artan HPeriod ve azalan LPperiod, uzun pozisyonlar için tam tersi.
Twitter: @kivancozbilgic
Youtube: http://youtube.com/c/kivancozbilgic
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using System.Windows.Media;
/*
Gann High Low
HPeriod:=input("HIGH Period",1,500,13);
LPeriod:=input("LOW Period",1,500,21);
HLd:=If(C>Ref(Mov(H,HPeriod,S),-1),1,If(C<Ref(Mov(L,LPeriod,S),-1),-1,0));
HLv:=ValueWhen(1.,HLd<>0,HLd);
HiLo:=IF(HLv=-1,Mov(H,HPeriod,S),Mov(L,LPeriod,S));
HiLo
Kıvanç Özbilgiç
https://drive.google.com/drive/folders/1aeEF9OZUSBUsZamv_t-GfYDVUi3jmige
*/
namespace Matriks.Lean.Algotrader
{
//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.
//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries
[IndicatorInformationAttribute("HiloKripex", IndicatorDrawingArea.OnDataSeries)]
//Indikatörün çizgilerinin isimleri
[IndicatorLineInformationAttribute(new []
{
"HiLo(0,1)"
}, new []
{
"#00CCFF"
}, new []
{
false
}, new []
{
0
}, new []
{
2
}
)]
public class HiloKripex : MatriksIndicator
{
//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız.
[DefaultValue(13)]
public int HPeriod
{
get; set;
}
[DefaultValue(21)]
public int LPeriod
{
get; set;
}
[DefaultValue(MovMethod.Simple)]
public MovMethod movMethod
{
get; set;
}
MOV smaH, smaL;
public sealed override void OnInit()
{
smaH = MOVIndicator(Symbol, SymbolPeriod, OHLCType.High, HPeriod, movMethod);
smaL = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Low, LPeriod, movMethod);
}
decimal HLd = 0, hilo = 0;
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
if (currentBar < Math.Max(HPeriod, LPeriod))
{
SetLine(0, currentBar, 0);
return ;
}
var currentClose = Instrument.SymbolBarData.Close[currentBar];
HLd = currentClose>smaH.Value[0][smaH.CurrentIndex -1] ? 1:(currentClose<smaL.Value[0][smaL.CurrentIndex -1] ? -1:HLd);
hilo = HLd == -1? smaH.CurrentValue:smaL.CurrentValue;
PointColors[currentBar] = HLd==-1 ? "#DC0D52":"#00CCFF";
SetLine(currentBar, hilo);
}
}
}
PointColors[currentBar] = HLd==-1 ? "#DC0D52":"#00CCFF"; satırında hata aldım. hata kodu cs0029 yardımcı olursanız sevinirim. iyi çalışmalar. elinize sağlık.
Merhabalar, PointColors.. satırı yerine, PaintPoint(currentBar, HLd == -1 ? "#DC0D52":"#00CCFF", 0); satırını kullanırsanız sorun düzelecektir. Lütfen deneyiniz. İyi çalışmalar.